package com.tangkun.environment.adapter;

import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.tangkun.environment.R;
import com.tangkun.environment.application.Session;
import com.tangkun.environment.entity.gongzuo.ReportViewReturn;
import com.tangkun.environment.utils.Utils;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * @author tangkun
 * @ClassName: XunChaShuJuAdapter
 * @Description: 巡查数据列表适配器
 * @date 2016-08-20 上午11:57:36
 */
public class JuBaoYiChangDetailAdapter extends BaseAdapter {

    private Context context;
    private List<ReportViewReturn.DataBean.FlowlistBean> listData = new ArrayList<ReportViewReturn.DataBean.FlowlistBean>();

    /**
     * 节点 时间为空或者未通过 赋值该索引 以后就不要赋值了
     */
    private int jiedianPosion = -1;

    /**
     * @param context
     * @param listData
     */
    public JuBaoYiChangDetailAdapter(Context context, List<ReportViewReturn.DataBean.FlowlistBean> listData) {
        this.context = context;
        this.listData = listData;
    }

    @Override
    public int getCount() {
        return listData.size();
    }

    @Override
    public Object getItem(int i) {
        return listData.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        JuBaoYiChangDetailAdapter.ViewHolder holder;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item_xunchashuju, null);
            holder = new JuBaoYiChangDetailAdapter.ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (JuBaoYiChangDetailAdapter.ViewHolder) convertView.getTag();
        }


        if (listData != null) {
            //顶部那根蓝色线 只有在第一项的时候才显示
            if (position == 0) {
                holder.tvXunchashujuLineTop.setVisibility(View.VISIBLE);
            } else {
                holder.tvXunchashujuLineTop.setVisibility(View.GONE);
            }
            //连接线颜色
            holder.tvXunchashujuLineMiddle.setBackgroundColor(context.getResources().getColor(R.color.common_blue));
            // 内容
            if (!TextUtils.isEmpty(listData.get(position).flowname)) {
                holder.tvXunchashujuContent.setText(listData.get(position).flowname);
            } else {
                holder.tvXunchashujuContent.setText("");
            }
            //日期
            if (!TextUtils.isEmpty(listData.get(position).audittime)) {
                holder.tvXunchashujuRiqi.setText(Utils.getDateYearMonthDay(listData.get(position).audittime));
            } else {
                holder.tvXunchashujuRiqi.setText("");
            }
            //操作者
            if (!TextUtils.isEmpty(listData.get(position).showname)) {
                holder.tvXunchashujuCaozuozhe.setText(listData.get(position).showname);
            } else {
                holder.tvXunchashujuCaozuozhe.setText("");
            }

            //警示按钮监听
            holder.ivXunchashujuJingshi.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    myClickListener.onStatusClick(position);
                }
            });

            //审核未通过或者时间为空的索引／节点
            if (TextUtils.isEmpty(listData.get(position).audittime) || listData.get(position).status == 2) {
                if (jiedianPosion == -1) {
                    jiedianPosion = position;
                }
            }

            if (listData.get(position).isFirstStep) {//第一步
                //左边提交圆形图片
                //这个索引后面的第一步左边提交圆形图片都是灰色了
                if (jiedianPosion != -1 && position > jiedianPosion) {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_tijiao_hui);
                } else {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_tijiao);
                }

                //警示按钮
                holder.ivXunchashujuJingshi.setVisibility(View.GONE);
                //按钮
                if (listData.get(position).status <= 0) {//提交数据
                    if (!Session.getInstance().getUserRole().equals("企业用户") && !Session.getInstance().getUserRole().equals("协会巡查员")) {
                        //原来显示“提交数据”按钮 的情况 如果是非企业主 并且 非协会巡查员身份 按钮隐藏
                        holder.tvXunchashujuCaozuo.setVisibility(View.INVISIBLE);
                    } else {
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        holder.tvXunchashujuCaozuo.setText("提交数据");
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_blue_solid);
                        //按钮监听
                        holder.tvXunchashujuCaozuo.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                myClickListener.onBtnClick(2, position);
                            }
                        });
                    }
                } else {//查看数据
                    if (hasStatusValue2(position)) {//判断所有item是否有状态为2的
                        holder.tvXunchashujuCaozuo.setText("编辑数据");
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_blue_solid);
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_blue_solid);
                        //按钮监听
                        holder.tvXunchashujuCaozuo.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                myClickListener.onBtnClick(1, position);
                            }
                        });
                    } else {
                        holder.tvXunchashujuCaozuo.setText("查看数据");
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_blue_solid);
                        //按钮监听
                        holder.tvXunchashujuCaozuo.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                myClickListener.onBtnClick(0, position);
                            }
                        });
                    }
                }
            } else if (listData.get(position).isLastStep) {//最后一步
                //左边归档圆形图片
                //这个索引后面的最后一步左边归档圆形图片都是灰色了
                if (jiedianPosion != -1 && position > jiedianPosion) {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_weiguidang);
                } else {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_yiguidang);
                }

                //警示按钮
                holder.ivXunchashujuJingshi.setVisibility(View.GONE);
                //按钮
                switch (listData.get(position).status) {
                    case 1://已归档
                        holder.ivXunchashujuJingshi.setVisibility(View.INVISIBLE);
                        holder.tvXunchashujuCaozuo.setVisibility(View.INVISIBLE);
                        break;
                    default://未归档
                        holder.ivXunchashujuJingshi.setVisibility(View.INVISIBLE);
                        holder.tvXunchashujuCaozuo.setVisibility(View.INVISIBLE);
                        break;
                }
            } else {//中间步骤
                //左边巡查圆形图片
                //这个索引后面的左边巡查圆形图片都是灰色了
                if (jiedianPosion != -1 && position > jiedianPosion) {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_xuncha_hui);
                } else {
                    holder.ivXunchashujuStatus.setImageResource(R.mipmap.ic_liucheng_xuncha);
                }

                //警示
//                if (!TextUtils.isEmpty(listData.get(position).description)) {
                holder.ivXunchashujuJingshi.setVisibility(View.VISIBLE);
//                } else {
//                    holder.ivXunchashujuJingshi.setVisibility(View.GONE);
//                }
                //按钮
                switch (listData.get(position).status) {
                    case 0://审核中／审核
                        //是本人显示审核
                        if (Session.getInstance().getUserId().equals(listData.get(position).audituserid)) {
                            holder.tvXunchashujuCaozuo.setText("审核数据");
                            holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                            holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_blue_solid);
                            //点击事件，弹出审核对话框
                            holder.tvXunchashujuCaozuo.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    myClickListener.onBtnClick(3, position);
                                }
                            });
                        } else {
                            //不是 则显示审核中
                            holder.tvXunchashujuCaozuo.setText("审核中");
                            holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_tips));
                            holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_gray);
                            //没有点击事件
                        }
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        break;
                    case 1://审核通过
                        holder.tvXunchashujuCaozuo.setText("审核通过");
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_tips));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_gray);
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        break;
                    case 2://未通过
                        holder.tvXunchashujuCaozuo.setText("未通过");
                        holder.tvXunchashujuCaozuo.setTextColor(context.getResources().getColor(R.color.common_white));
                        holder.tvXunchashujuCaozuo.setBackgroundResource(R.drawable.shape_rectangle_red_solid);
                        holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                        break;
                }
            }

            //这个索引后面的按钮都不显示了,连接线颜色都是灰色
            if (jiedianPosion != -1 && position > jiedianPosion) {
                holder.ivXunchashujuJingshi.setVisibility(View.INVISIBLE);
                holder.tvXunchashujuCaozuo.setVisibility(View.INVISIBLE);
                //连接线颜色
                holder.tvXunchashujuLineMiddle.setBackgroundColor(context.getResources().getColor(R.color.common_tips));
            } else {
                holder.tvXunchashujuCaozuo.setVisibility(View.VISIBLE);
                //连接线颜色
                if (position == jiedianPosion) {
                    //等于当前索引连接线颜色 也是灰色
                    holder.tvXunchashujuLineMiddle.setBackgroundColor(context.getResources().getColor(R.color.common_tips));
                } else {
                    //其他情况色蓝色
                    holder.tvXunchashujuLineMiddle.setBackgroundColor(context.getResources().getColor(R.color.common_blue));
                }
            }
            //最后一项隐藏连接线
            if (position == listData.size() - 1) {
                //隐藏连接线
                holder.tvXunchashujuLineMiddle.setVisibility(View.INVISIBLE);
            } else {
                holder.tvXunchashujuLineMiddle.setVisibility(View.VISIBLE);
            }
        }
        return convertView;

    }

    /**
     * 判断所有item是否有status为2的项 或者包含了没有审核过可以编辑的两种情况
     *
     * @param position 第一项的索引 第几次巡查数据的第一项的索引
     * @return
     */
    private boolean hasStatusValue2(final int position) {
        boolean hasStatusValue2 = false;
        for (int i = 0; i < listData.size(); i++) {
            //status=2表示审核未通过，可以编辑资料
            if (listData.get(i).status == 2) {
                //原来显示“编辑资料”按钮的情况或者“查看资料”按钮的情况， 如果是非企业主 并且 非协会巡查员身份 显示“查看资料”按钮
                if (Session.getInstance().getUserRole().equals("企业用户") || Session.getInstance().getUserRole().equals("协会巡查员")) {
                    hasStatusValue2 = true;
                }
            } else {
                //判断这次巡查数据的第一步的下一步是否审核过，status=0表示未审核过，可以编辑
                if (listData.get(position).isFirstStep) {
                    if (listData.get(position + 1).status == 0) {
                        //原来显示“编辑资料”按钮的情况或者“查看资料”按钮的情况， 如果是非企业主 并且 非协会巡查员身份 显示“查看资料”按钮
                        if (Session.getInstance().getUserRole().equals("企业用户") || Session.getInstance().getUserRole().equals("协会巡查员")) {
                            hasStatusValue2 = true;
                        }
                    } else {
                        hasStatusValue2 = false;
                    }
                }
            }
        }
        return hasStatusValue2;
    }

    /**
     * 自定义接口回调
     */
    private MyClickListener myClickListener;

    public void setMyClickListener(MyClickListener myClickListener) {
        this.myClickListener = myClickListener;
    }

    public interface MyClickListener {
        /**
         * 感叹号
         *
         * @param position 索引
         */
        void onStatusClick(int position);

        /**
         * 按钮
         *
         * @param type     0：查看数据 1：编辑数据 2：提交数据 3:
         * @param position 索引
         */
        void onBtnClick(int type, int position);
    }

    static class ViewHolder {
        @BindView(R.id.tv_xunchashuju_line_top)
        TextView tvXunchashujuLineTop;
        @BindView(R.id.iv_xunchashuju_status)
        ImageView ivXunchashujuStatus;
        @BindView(R.id.tv_xunchashuju_content)
        TextView tvXunchashujuContent;
        @BindView(R.id.tv_xunchashuju_riqi)
        TextView tvXunchashujuRiqi;
        @BindView(R.id.tv_xunchashuju_line_middle)
        TextView tvXunchashujuLineMiddle;
        @BindView(R.id.tv_xunchashuju_caozuozhe)
        TextView tvXunchashujuCaozuozhe;
        @BindView(R.id.iv_xunchashuju_jingshi)
        ImageView ivXunchashujuJingshi;
        @BindView(R.id.tv_xunchashuju_caozuo)
        TextView tvXunchashujuCaozuo;

        ViewHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }
}
